mathod A (RC2rot): RC -> (trim) -> rotation
psi = 0, 120, -12 or 0, 90, -90
(1) Check the angle file
(2) Rocking curve (RC)
HW fitting angle = 0, 120(p120), -120(m120)
gauss fitting angle = 0, 120(p120), -120(m120)
Note: The fitting time depends on the capability of your PC.
(3) Image trimming
(4) Prepare the rotating data using image_editor
(5) Calculate q
(6) re-plot and re-analysis
# from pathlib import Path
# import matplotlib.pyplot as plt
# import mpl_toolkits.axes_grid1
# from mpl_toolkits.mplot3d import Axes3D
# import numpy as np
# import pandas as pd
# from PIL import Image
from qfit import make_angle_file as maf
from qfit import fit_q
from qfit import re_analysis as rean
from qfit import re_plot as replt
from qfit import multiplot as mlplt
from qfit import image_treat as imt
from qfit import file_folder_trans as fft
# Detector size
NX=2368
NY=2240
import warnings
warnings.simplefilter('ignore')
# warnings.resetwarnings()
# warnings.simplefilter('ignore', FutureWarning)
%load_ext autoreload
%autoreload 2
# Set target holder path
# g_0 = r"D:\XrayDataset_for_paper\GaN_n1_4_0"
# g_p120 = r"D:\XrayDataset_for_paper\GaN_n1_4_120"
# g_m120 = r"D:\XrayDataset_for_paper\GaN_n1_4_m120"
g_0 =r"C:\Users\me\Desktop\Program\GaNdata\GaN_n1_4_0"
g_p120 = r"C:\Users\me\Desktop\Program\GaNdata\GaN_n1_4_120"
g_m120 = r"C:\Users\me\Desktop\Program\GaNdata\GaN_n1_4_m120"
# Check if it contains tif data, angle.text, and dark tif data.
# phi=0
_ = maf.check_holder(data_path=g_0)
# phi=p120
_ = maf.check_holder(data_path=g_p120)
# phi=m120
_ = maf.check_holder(data_path=g_m120)
# If the angle file does not exist, go back to creating the angle file. -> temp_anglefile.ipynb
Data path:C:\Users\me\Desktop\Program\GaNdata\GaN_n1_4_0 Dark file exist T/F: True Number of all tif files : 182 Number of tif data files without dark file: 181 tif data name: ['-165000.tif', '-166000.tif', '-167000.tif', '-168000.tif', '-169000.tif']...['-342000.tif', '-343000.tif', '-344000.tif', '-345000.tif', '-346000.tif'] angle file exist T/F: True ----- Data path:C:\Users\me\Desktop\Program\GaNdata\GaN_n1_4_120 Dark file exist T/F: True Number of all tif files : 191 Number of tif data files without dark file: 190 tif data name: ['-340000.tif', '-341000.tif', '-342000.tif', '-343000.tif', '-344000.tif']...['-525000.tif', '-526000.tif', '-527000.tif', '-528000.tif', '-529000.tif'] angle file exist T/F: True ----- Data path:C:\Users\me\Desktop\Program\GaNdata\GaN_n1_4_m120 Dark file exist T/F: True Number of all tif files : 158 Number of tif data files without dark file: 157 tif data name: ['165000.tif', '166000.tif', '167000.tif', '168000.tif', '169000.tif']...['317000.tif', '318000.tif', '319000.tif', '320000.tif', '321000.tif'] angle file exist T/F: True -----
# If the angle file exists, check the contents of the angle file
maf.anglefile_info(data_path=g_0)
print('-'*5)
maf.anglefile_info(data_path=g_p120)
print('-'*5)
maf.anglefile_info(data_path=g_m120)
# RC hw fitting
# core: Use multi-process PC cores. Attention memory size.
# filter: Filter parameters are set to exclude noise level signals from the analysis.
# It is only analyzed if the difference between the maximum and minimum RC intensities is greater than the filter value.
# If it is not included in the analysis, enter the value of Nan as the analysis value.
# method: hw (full width half maxima)
cores = 4
# t_file = g_0
# t_folder,_ = fit_q.fit_analysis(target_file=t_file, filter=30, method='hw', comment='0data', core=cores)
# print('')
# c_file = g_p120
# c_folder,_ = fit_q.fit_analysis(target_file=c_file, filter=40, method='hw', comment='p120data', core=cores)
# print('')
# a_file = g_m120
# a_folder,_ = fit_q.fit_analysis(target_file=a_file, filter=30, method='hw', comment='m120data', core=cores)
# print('')
# RC gauss fitting
# pmax: In addition to the filter condition,
# if the condition with low distribution intensity (maximum intensity> median intensity + PMAX) is not satisfied,
# it is excluded from the analysis. If it is not analyzed, or if the fitting fails, the value of Nan is entered.
# method: gaussian
t_file = g_0
t_folder, _ = fit_q.fit_analysis(target_file=t_file, filter=30, pmax=30, method='gaussian', comment='0data', core=cores)
print('')
c_file = g_p120
c_folder,_ = fit_q.fit_analysis(target_file=c_file, filter=40, pmax=30, method='gaussian', comment='p120data', core=cores)
print('')
a_file = g_m120
a_folder,_ = fit_q.fit_analysis(target_file=a_file, filter=30, pmax=30, method='gaussian', comment='m120data', core=cores)
print('')
0data target file:C:\Users\me\Desktop\Program\GaNdata\GaN_n1_4_0 Elasped time: 1344.6[s] @ 4 cores Comment: 0data Output file name: gaussian_220714_094732_c.npy Folder name: C:\Users\me\Desktop\Program\xrdt-main\gaussian_220714_094732 ---------- p120data target file:C:\Users\me\Desktop\Program\GaNdata\GaN_n1_4_120 Elasped time: 1416.2[s] @ 4 cores Comment: p120data Output file name: gaussian_220714_100956_c.npy Folder name: C:\Users\me\Desktop\Program\xrdt-main\gaussian_220714_100956 ---------- m120data target file:C:\Users\me\Desktop\Program\GaNdata\GaN_n1_4_m120 Elasped time: 1215.6[s] @ 4 cores Comment: m120data Output file name: gaussian_220714_103334_c.npy Folder name: C:\Users\me\Desktop\Program\xrdt-main\gaussian_220714_103334 ----------
# Check results
rc0 = rean.load_rc_tif(t_folder)
mlplt.rc_12plots(rc0, title='$\psi$=0')
rcp120 = rean.load_rc_tif(c_folder)
mlplt.rc_12plots(rcp120, title='$\psi$=p120')
rcm120 = rean.load_rc_tif(a_folder)
mlplt.rc_12plots(rcm120, title='$\psi$=m120')
# psi=0
# 2 inch: wh=1100, 4 inch: wh=2150, M:wh=500
# Wait a few seconds and a new GUI window will appear.
wh4 = 2150
wh2 = 1100
whm = 500
wh_set = wh4
tr_t_folder = imt.gui2trim(t_folder, wh=wh_set, NX=NX, NY=NY, time_out=120)
(2368, 2240) Quit -> press "ESC" Key start x:66, y:67 --wh:2150-- end x:2216, y:2217 start x:96, y:143 --wh:2150-- end x:2246, y:2293 start x:51, y:126 --wh:2150-- end x:2201, y:2276 start x:51, y:101 --wh:2150-- end x:2201, y:2251 start x:66, y:50 --wh:2150-- end x:2216, y:2200 start x:7, y:93 --wh:2150-- end x:2157, y:2243 start x:29, y:42 --wh:2150-- end x:2179, y:2192 final x: 29, y: 42 Original h(Y), w(X) : (2368, 2240) Trimmed h(Y), w(X) : (2150, 2150) Original h(Y), w(X) : (2368, 2240) Trimmed h(Y), w(X) : (2150, 2150) Original h(Y), w(X) : (2368, 2240) Trimmed h(Y), w(X) : (2150, 2150)
# psi=p120
tr_c_folder = imt.gui2trim(c_folder, wh=wh_set, NX=NX, NY=NY, time_out=120)
(2368, 2240) Quit -> press "ESC" Key start x:14, y:42 --wh:2150-- end x:2164, y:2192 start x:59, y:76 --wh:2150-- end x:2209, y:2226 start x:36, y:50 --wh:2150-- end x:2186, y:2200 final x: 36, y: 50 Original h(Y), w(X) : (2368, 2240) Trimmed h(Y), w(X) : (2150, 2150) Original h(Y), w(X) : (2368, 2240) Trimmed h(Y), w(X) : (2150, 2150) Original h(Y), w(X) : (2368, 2240) Trimmed h(Y), w(X) : (2150, 2150)
# psi=m120
tr_a_folder = imt.gui2trim(a_folder, wh=wh_set, NX=NX, NY=NY, time_out=120)
(2368, 2240) Quit -> press "ESC" Key start x:29, y:50 --wh:2150-- end x:2179, y:2200 final x: 29, y: 50 Original h(Y), w(X) : (2368, 2240) Trimmed h(Y), w(X) : (2150, 2150) Original h(Y), w(X) : (2368, 2240) Trimmed h(Y), w(X) : (2150, 2150) Original h(Y), w(X) : (2368, 2240) Trimmed h(Y), w(X) : (2150, 2150)
# Check results
rc0 = rean.load_rc_tif(tr_t_folder)
mlplt.rc_12plots(rc0, title='$\psi$=0')
# mlplt.rc_3plots(rc0, title='$\phi$=0', save=False, dpi=1800)
rcp120 = rean.load_rc_tif(tr_c_folder)
mlplt.rc_12plots(rcp120, title='$\psi$=p120')
rcm120 = rean.load_rc_tif(tr_a_folder)
mlplt.rc_12plots(rcm120, title='$\psi$=m120')
(1) Upper left window: Select data folder (psi=0)
(2) Set the reading step (1: all files, default 16)
(3) Middle left window: Select data folder (e.g. psi=120)
(4) Set the reading step (1: All files, default 16)
(5) If you need to flip the x-direction, set the scale original x to -1.
(6) Change the x,y, rotation, and scale parameters.
(7) Export from the File menu.
(8) Quit from the File menu.
# Wait a few seconds (10s - 60s) and a new GUI window will appear.
outfolderlist,_ = imt.img_editor_process()
print(outfolderlist)
# out put folder name :rot_ + 'load folder name' ex: rot_tr_hw_220208_132247
# if missing outfolderlist, input the folder name.
# outfolderlist = ['','']
[WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_094732'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_100956'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_103334')]
# Check results
rc0 = rean.load_rc_tif(outfolderlist[0])
mlplt.rc_12plots(rc0, title='$\psi$=0')
rcp120 = rean.load_rc_tif(outfolderlist[1])
mlplt.rc_12plots(rcp120, title='$\psi$=p120')
rcm120 = rean.load_rc_tif(outfolderlist[2])
mlplt.rc_12plots(rcm120, title='$\psi$=m120')
# Set the data folder after rotation.
# fr0=r'C:\Users\USER\Desktop\XRTD\xrdt\tr_hw_211226_215327'
# frp120=r'C:\Users\USER\Desktop\XRTD\xrdt\tr_hw_211226_215523'
fr0 = outfolderlist[0]
frp120 = outfolderlist[1]
frm120 = outfolderlist[2]
print(fr0,frp120,frm120)
C:\Users\yagyu\Desktop\Xrdt_main\xrdt\rot_tr_gaussian_220714_094732 C:\Users\yagyu\Desktop\Xrdt_main\xrdt\rot_tr_gaussian_220714_100956 C:\Users\yagyu\Desktop\Xrdt_main\xrdt\rot_tr_gaussian_220714_103334
# convert tif to npy
r0 = fft.conv_tif2npy(file_dir=fr0)
rp120 = fft.conv_tif2npy(file_dir=frp120)
rm120 = fft.conv_tif2npy(file_dir=frm120)
# fft.fd_tif2fd_npy(file_dir=fr0)
# fft.fd_tif2fd_npy(file_dir=frp120)
# fft.fd_tif2fd_npy(file_dir=frm120)
# r0=fft.folder_file_list(fr0,look_for='npy')
# rp120=fft.folder_file_list(frp120,look_for='npy')
# rm120=fft.folder_file_list(frm120,look_for='npy')
print(f'psi=0')
print(r0)
print(f'psi=p120')
print(rp120)
print(f'psi=m120')
print(rm120)
npy list:[WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_094732/rot_tr_gaussian_220714_094732_c.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_094732/rot_tr_gaussian_220714_094732_h.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_094732/rot_tr_gaussian_220714_094732_w.npy')]
npy list:[WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_100956/rot_tr_gaussian_220714_100956_c.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_100956/rot_tr_gaussian_220714_100956_h.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_100956/rot_tr_gaussian_220714_100956_w.npy')]
npy list:[WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_103334/rot_tr_gaussian_220714_103334_c.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_103334/rot_tr_gaussian_220714_103334_h.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_103334/rot_tr_gaussian_220714_103334_w.npy')]
psi=0
[WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_094732/rot_tr_gaussian_220714_094732_c.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_094732/rot_tr_gaussian_220714_094732_h.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_094732/rot_tr_gaussian_220714_094732_w.npy')]
psi=p120
[WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_100956/rot_tr_gaussian_220714_100956_c.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_100956/rot_tr_gaussian_220714_100956_h.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_100956/rot_tr_gaussian_220714_100956_w.npy')]
psi=m120
[WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_103334/rot_tr_gaussian_220714_103334_c.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_103334/rot_tr_gaussian_220714_103334_h.npy'), WindowsPath('C:/Users/yagyu/Desktop/Xrdt_main/xrdt/rot_tr_gaussian_220714_103334/rot_tr_gaussian_220714_103334_w.npy')]
wh_set=2150
# The '_c.npy' file is used to calculate q.
target_t_ = r0[0]
target_c_ = rp120[0]
# set output folder name
out_file_ = '2R_0p120'
# phi=0
set_angle_t = 0
# phi=120
set_angle_c = 120
# If it is trimmed, change NX, NY.
# original NX=2368, NY=2240,
out_q_folder_0p = fit_q.q_analysis_2R(target_t=target_t_, target_c=target_c_, out_file=out_file_,
angle_t=set_angle_t, angle_c=set_angle_c,
q=6.258, NX=wh_set, NY=wh_set)
outfile name:2R_0p120 Image Size (h(NY),w(NX)):(2150, 2150) set Angle t: 0, c: 120 set target t: C:\Users\yagyu\Desktop\Xrdt_main\xrdt\rot_tr_gaussian_220714_094732\rot_tr_gaussian_220714_094732_c.npy, c: C:\Users\yagyu\Desktop\Xrdt_main\xrdt\rot_tr_gaussian_220714_100956\rot_tr_gaussian_220714_100956_c.npy ['NEW\r', 'set Angle t:0, c:120\r', '2R_0p120_f.png\r', 'Figure(640x480)\r', ''] ----------
# Check results
q_0p = rean.load_q_tif(out_q_folder_0p)
mlplt.qcp_12plots(q_0p, title='q (0,120)', step=100)
target_t_ = r0[0]
target_c_ = rm120[0]
# set output folder name
out_file_ = '2R_0m120'
# phi=0
set_angle_t = 0
# phi=120
set_angle_c = -120
# If it is trimmed, change NX, NY.
out_q_folder_0m = fit_q.q_analysis_2R(target_t=target_t_, target_c=target_c_, out_file=out_file_,
angle_t=set_angle_t, angle_c=set_angle_c,
q=6.258, NX=wh_set, NY=wh_set)
outfile name:2R_0m120 Image Size (h(NY),w(NX)):(2150, 2150) set Angle t: 0, c: -120 set target t: C:\Users\yagyu\Desktop\Xrdt_main\xrdt\rot_tr_gaussian_220714_094732\rot_tr_gaussian_220714_094732_c.npy, c: C:\Users\yagyu\Desktop\Xrdt_main\xrdt\rot_tr_gaussian_220714_103334\rot_tr_gaussian_220714_103334_c.npy ['NEW\r', 'set Angle t:0, c:-120\r', '2R_0m120_f.png\r', 'Figure(640x480)\r', ''] ----------
# Check results
q_0m = rean.load_q_tif(out_q_folder_0m)
mlplt.qcp_12plots(q_0m, title='q (0,m120)', step=100)
target_t_ = rp120[0]
target_c_ = rm120[0]
# set output folder name
out_file_ = '2R_pm120'
# phi=0
set_angle_t = 120
# phi=120
set_angle_c = -120
# If it is trimmed, change NX, NY.
out_q_folder_pm = fit_q.q_analysis_2R(target_t=target_t_, target_c=target_c_, out_file=out_file_,
angle_t=set_angle_t, angle_c=set_angle_c,
q=6.258, NX=wh_set, NY=wh_set)
outfile name:2R_pm120 Image Size (h(NY),w(NX)):(2150, 2150) set Angle t: 120, c: -120 set target t: C:\Users\yagyu\Desktop\Xrdt_main\xrdt\rot_tr_gaussian_220714_100956\rot_tr_gaussian_220714_100956_c.npy, c: C:\Users\yagyu\Desktop\Xrdt_main\xrdt\rot_tr_gaussian_220714_103334\rot_tr_gaussian_220714_103334_c.npy ['NEW\r', 'set Angle t:120, c:-120\r', '2R_pm120_f.png\r', 'Figure(640x480)\r', ''] ----------
# Check results
q_pm = rean.load_q_tif(out_q_folder_pm)
mlplt.qcp_12plots(q_pm, title='q (p120,m120)', step=100)
# average q
ave_q= rean.average_3q(q_0p, q_0m, q_pm)
mlplt.qcp_12plots(ave_q, title='ave q', step=100)
mlplt.qp_4plots(ave_q, title='q polar')
mlplt.qp3_4plots(ave_q, title='q polar',step=100)
mlplt.qp3_3plots(ave_q, title='q polar analysis', step=150)
# Other Plot
# out_q_folder_0p='2R_0p120'
# out_q_folder_0m='2R_0m120'
# out_q_folder_pm='2R_pm120'
# q_0p = rean.load_q_tif(out_q_folder_0p)
mlplt.qcp_12plots(q_0p, title='q (0,120)', step=100)
mlplt.qp_4plots(q_0p, title='q polar')
mlplt.qp3_3plots(q_0p, title='q polar analysis', step=150)
# q_0m = rean.load_q_tif(out_q_folder_0m)
mlplt.qcp_12plots(q_0m, title='q (0,m120)', step=100)
# q_pm = rean.load_q_tif(out_q_folder_pm)
mlplt.qcp_12plots(q_pm, title='q (p120,m120)', step=100)